x86: 32on64 oversight in update_va_mapping
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 15 Mar 2007 10:38:58 +0000 (10:38 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 15 Mar 2007 10:38:58 +0000 (10:38 +0000)
Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/mm.c

index b37ade4cb3a745376095d987d31b2f8b4ae74a70..1c65070d15ada301260d764feabf8c3c7f3234f8 100644 (file)
@@ -2768,7 +2768,9 @@ int do_update_va_mapping(unsigned long va, u64 val64,
             flush_tlb_one_mask(d->domain_dirty_cpumask, va);
             break;
         default:
-            if ( unlikely(get_user(vmask, (unsigned long *)bmap_ptr)) )
+            if ( unlikely(!IS_COMPAT(d) ?
+                          get_user(vmask, (unsigned long *)bmap_ptr) :
+                          get_user(vmask, (unsigned int *)bmap_ptr)) )
                 rc = -EFAULT;
             pmask = vcpumask_to_pcpumask(d, vmask);
             flush_tlb_one_mask(pmask, va);